﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using DECOR.BL.BE;
using DECOR.BL.BC;
using System.Collections.Generic;
using AjaxControlToolkit;
using System.Net.Mail;
using System.IO;
using System.Text;
using CM.BL.BE;

namespace DECOR.WebApp
{
    public partial class MantReclamo : System.Web.UI.Page
    {
        
        public string gvSectorVal = "00";
        public string gvGrpVendVal = "100";
        private DocReclamoBE DocReclamo = null;
        
        protected void Page_Load(object sender, EventArgs e)
        {
            Session["tipoDoc"] = "R";
            if (!Page.IsPostBack)
            {
                try
                {
                    ddlStatus.Attributes.Add("onChange", "capturaValStatus(this);");
                    txtIdVisita.Attributes.Add("oncontextmenu", "return false;");
                    if (!(Session["Operacion"] == null))
                    {
                        if (((string)Session["Operacion"]).Equals("editar"))
                        {
                            cargarReclamo();
                            lnkCambiarStatus.Enabled = true;
                            manejarBotonera();
                            activarCampos(false);
                            lblStatus.Text = ddlStatus.SelectedItem.ToString();
                            tpVisitas.Enabled = true;
                        }
                        else if (((string)Session["Operacion"]).Equals("Ver"))
                        {
                            cargarReclamo();
                            //-------------------------------------
                            lblStatus.Text = ddlStatus.SelectedItem.ToString();
                            Session["Operacion"] = "Ver";
                            //campos
                            lnkCambiarStatus.Enabled = true;
                            activarCampos(false);
                            tpVisitas.Enabled = true;
                        }

                        VerificaOpcionesUsuario(); //WEBDIST
                        validaDatosMP(); //rhuapaya 20.05.2012
                    }
                    else
                    {
                        tpVisitas.Enabled = false;
                    }

                    //maximo 250 caracteres o 150 para el panel de estado.
                    txtDescripcion.Attributes.Add("onkeypress", " ValidarCaracteres(this, 250);");
                    txtDescripcion.Attributes.Add("onkeyup", " ValidarCaracteres(this, 250);");
                    
                    if (DropDownListStatusVisita.SelectedValue.ToString() == "3")
                    {
                        LabelLeyenda.Text = "Máximo 250 caracteres.";
                    }
                    else
                    {
                       LabelLeyenda.Text = "Máximo 150 caracteres.";
                    }
                }
                catch (Exception ex)
                {
                    Session["Mensaje"] = ex.Message;
                }
            }
            else
            {
                try
                {
                    
                }
                catch (Exception ex)
                {
                    Session["Mensaje"] = ex.Message;
                }
            }
        }

        
        #region Metodos internos
            //private List<GenericBE> getGenericBE(ClienteWS.GenericBE[] p)
            //{
            //    List<GenericBE> g = new List<GenericBE>();
            //    try
            //    {
            //        foreach (ClienteWS.GenericBE i in p)
            //        {
            //            GenericBE n = new GenericBE();
            //            n.Codigo = i.Codigo;
            //            n.Descripcion = i.Descripcion;
            //            g.Add(n);
            //        }

            //    }
            //    catch
            //    {
            //        g = null;
            //    }


            //    return g;
            //}
           
            private void validaInterlocutores()
            {
                DocReclamo = (DocReclamoBE)Session["DocReclamo"];
                string ag = string.Empty;
                string ES = string.Empty;
                bool es = false;
                if (Session["Operacion"] != null)
                    if (((string)Session["Operacion"]).Equals("editar"))
                    {
                        foreach (InterlocutorReclamoBE i in DocReclamo.Interlocutor)
                        {
                            if (i.PARVW.Equals("AG"))
                            {
                                if (DocReclamo.Interlocutor.Find(x => x.PARVW.Equals("AG")).EsVentual)
                                {
                                    ag = DocReclamo.Interlocutor.Find(x => x.PARVW.Equals("AG")).ADRNR;
                                    ES = "X";
                                }
                                else
                                    ag = DocReclamo.Interlocutor.Find(x => x.PARVW.Equals("AG")).KUNNR;
                                break;
                            }
                        }
                        List<GenericBE> ladrnr = new List<GenericBE>();
                        foreach (InterlocutorReclamoBE g in DocReclamo.Interlocutor)
                        {
                            GenericBE i = new GenericBE();
                            i.Codigo = g.PARVW;
                            i.Descripcion = g.ADRNR;
                            ladrnr.Add(i);

                        }
                        DocReclamo.Interlocutor = ReclamoBC.Instance.getInterXEmpresa(ag, txtPersonaContacto.Text,
                                                                               txtEmpResp.Text, string.Empty, string.Empty, ES);

                        foreach (InterlocutorReclamoBE g in DocReclamo.Interlocutor)
                        {
                            if (ladrnr.Find(x => x.Codigo.Equals(g.PARVW)) != null)
                            {
                                g.ADRNR = ladrnr.Find(x => x.Codigo.Equals(g.PARVW)).Descripcion.Trim();

                            }

                        }

                    }
                    else
                    {
                        DocReclamo.Interlocutor = ReclamoBC.Instance.getInterXEmpresa(txtEmpresa.Text, txtPersonaContacto.Text, txtEmpResp.Text, string.Empty, string.Empty, string.Empty);
                    }

                Session["DocReclamo"] = DocReclamo;
                Session["Mensaje"] = string.Empty;
                List<GenericBE> lstCodigoPostal = (List<GenericBE>)Session["lstCodigoPostal"];

                //ParametroWS.ParametroWS p = new DECOR.WebApp.ParametroWS.ParametroWS();
                //lst = null;
                //if (Session["lstCodigoPostal"] == null)
                //{
                //    ParametroWS.DataDDLBE dataDDLBE = p.getDataDDL();
                //    lst = getGenericBE(dataDDLBE.LstZipCodes);
                //    Session["lstCodigoPostal"] = lst;
                //}
                //else
                //{
                //    lst = (List<GenericBE>)Session["lstCodigoPostal"];
                //}
                if (Session["CargarCombos"] == null)
                {
                    CargarDatosCombos();
                    Dictionary<string, List<GenericBE>> dict = (Dictionary<string, List<GenericBE>>)Session["CargarCombos"];
                    lstCodigoPostal = dict["codigoPostal"].ToList();
                }
                else
                {
                    Dictionary<string, List<GenericBE>> dict = (Dictionary<string, List<GenericBE>>)Session["CargarCombos"];
                    lstCodigoPostal = dict["codigoPostal"].ToList();
                }

                DocReclamo.Interlocutor.RemoveAll(x => x.PARVW.Equals("AP"));
                foreach (InterlocutorReclamoBE i in DocReclamo.Interlocutor)
                {
                    if (i.PARVW.Equals("AG"))//EMPRESA 
                    {
                        txtEmpresa.Text = i.KUNNR;
                        txtNomCliente.Text = i.NOMBRE;
                        if (!txtEmpresaDet.Text.Equals(i.KUNNR) || txtEmpresaDet.Text.Equals(""))
                        {
                            // lleno datos del panel
                            txtEmpresaDet.Text = i.KUNNR;
                            txtNomEmpresa.Text = i.NOMBRE;
                            txtDirEmpresa.Text = i.Direccion;
                            txtNIF.Text = i.NIF == null ? "" : i.NIF;
                            txtTelfEmpre.Text = i.Telefono == null ? "" : i.Telefono;
                            if (lstCodigoPostal.Find(x => x.Codigo.Equals(i.CodPostal)) != null)
                                ddlCodpEmpresa.SelectedValue = i.CodPostal;

                            else if (!i.EsVentual)
                            {
                                Session["Mensaje"] = "El código postal de la empresa no existe";
                                break;
                            }
                        }
                        // valido que sea eventual
                        if (i.EsVentual && ((string)Session["Operacion"]).Equals("crear"))
                        {
                            txtNomEmpresa.Enabled = true;
                            txtDirEmpresa.Enabled = true;
                            ddlCodpEmpresa.Enabled = true;
                            txtTelfEmpre.Enabled = true;
                            txtNIF.Enabled = true;

                        }

                    }
                    else if (i.PARVW.Equals("WE") && (!txtCodDestMerc.Text.Equals(i.KUNNR) || (txtCodDestMerc.Text.Equals(""))))//DESTINATARIO DE MERCANCIA
                    {
                        // lleno datos del panel
                        txtCodDestMerc.Text = i.KUNNR;
                        txtNomDestMerc.Text = i.NOMBRE;
                        txtDirDestMerc.Text = i.Direccion;
                        if (lstCodigoPostal.Find(x => x.Codigo.Equals(i.CodPostal)) != null)
                            ddlCodpDestMerc.SelectedValue = i.CodPostal;
                        else
                        {
                            Session["Mensaje"] = "El código postal del destinatario  no existe";
                            break;
                        }
                    }
                    else if (i.PARVW.Equals("VE") && (!txtCodECom.Text.Equals(i.PERNR) || txtCodECom.Text.Equals("")))//ENCARGADO COMERCIAL
                    {
                        txtCodECom.Text = i.PERNR;
                        txtNomECom.Text = i.NOMBRE;
                    }
                    else if (i.PARVW.Equals("ZM"))//EMPLEADO RESPONSABLE
                    {
                        txtEmpResp.Text = i.PERNR;
                        lblEmpResp.Text = i.NOMBRE;
                        if (!txtCodResPago.Text.Equals(i.PERNR) || (txtCodResPago.Text.Equals("")))
                        {
                            //lleno el panel de detalle
                            txtCodResPago.Text = i.PERNR;
                            txtNomResPago.Text = i.NOMBRE;
                            //txtDirResPago.Text = i.Direccion;
                        }
                    }
                }
            }
            
            private void validaDatosMP(){
                List<GenericBE> lst = ReclamoBC.Instance.getValidaData( txtNroPedido.Text,  txtMaterial.Text,  txtMaterial2.Text,  txtReclaRef.Text);
                foreach (GenericBE g in lst)
                {
                    if (g.Codigo != null)
                    {
                        if ((g.Codigo.Equals("p") && (!txtNroPedido.Text.ToString().Equals(""))) ||
                           ((!txtNroPedido.Text.ToString().Equals("")) && g.Descripcion.Equals("")))
                            lblNroPedido.Text = g.Descripcion;
                        else if (g.Codigo.Equals("m1") && (!txtMaterial.Text.ToString().Equals("")))
                            lblMaterial1.Text = g.Descripcion;
                        else if (g.Codigo.Equals("m2") && (!txtMaterial2.Text.ToString().Equals("")))
                            lblMaterial2.Text = g.Descripcion;
                    }
                }
            }

            private void limpiaPedido()
            {
                txtEMail.Text = string.Empty;
                txtNIF.Text = string.Empty;
                txtTelfEmpre.Text = string.Empty;
                txtReclaRef.Text = "";
                txtPersonaContacto.Text = string.Empty;
                txtCodDestMerc.Text = string.Empty;
                txtCodECom.Text = string.Empty;
                //txtCodPContac.Text = string.Empty;
                txtCodResPago.Text = string.Empty;
                txtDescripcion.Text = string.Empty;
                txtDirDestMerc.Text = string.Empty;
                txtDirEmpresa.Text = string.Empty;
                txtDirPContac.Text = string.Empty;
                //txtDirResPago.Text = string.Empty;
                txtEmpresa.Text = string.Empty;
                txtEmpresaDet.Text = string.Empty;
                txtEmpResp.Text = string.Empty;
                txtFechaF.Text = string.Empty;
                txtFechaI.Text = string.Empty;
                txtFechaSts.Text = string.Empty;
                txtHoraReclamoF.Text = string.Empty;
                txtHoraReclamoI.Text = string.Empty;
                txtMaterial.Text = string.Empty;
                txtMaterial2.Text = string.Empty;
                txtNomDestMerc.Text = string.Empty;
                txtNomECom.Text = string.Empty;
                txtNomEmpresa.Text = string.Empty;
                txtNomPContac.Text = string.Empty;
                txtNomResPago.Text = string.Empty;
                txtNroPedido.Text = string.Empty;
                //txtNumReclamo.Text = string.Empty;
                txtPersonaContacto.Text = string.Empty;
                txtReclaRef.Text = string.Empty;
                txtTextoDatosFacturacion.Text = string.Empty;
                txtTextoDiagnostico.Text = string.Empty;
                txtTextoMotivosOtros.Text = string.Empty;
                txtTextoNotaDireccion.Text = string.Empty;
                txtTextoPedidoReferencia.Text = string.Empty;
                txtTextoPersonaContacto.Text = string.Empty;
                txtTextoSeguimiento.Text = string.Empty;
                txtTextoSolucion.Text = string.Empty;
                txtTextoTratemInicial.Text = string.Empty;
                txtUsuarioStatus.Text = string.Empty;
                txtComantario.Text = string.Empty;


                lblDetalleInterlocuroes.Text = string.Empty;
                lblEmpResp.Text = string.Empty;
                lblMaterial1.Text = string.Empty;
                lblMaterial2.Text = string.Empty;
                txtNomCliente.Text = string.Empty;
                lblNroPedido.Text = string.Empty;
                lblPersonaContacto.Text = string.Empty;
                lblReclaRef.Text = string.Empty;
                lblStatus.Text = string.Empty;

                ////-- limpiar info del cliente:
                
                txtEmpresaDet.Enabled = false;
                txtNomEmpresa.Enabled = false;
                txtDirEmpresa.Enabled = false;
                ddlCodpEmpresa.Enabled = false;
            }

            private void cargarDatosInter()
            {
                DocReclamoBE Doc = null;
                string ag = string.Empty;
                string ap = string.Empty;
                string zm = string.Empty;
                string ES = string.Empty;
                List<GenericBE> lstCodigoPostal = new List<GenericBE>();
                if (Session[""] != null)
                {
                    Dictionary<string, List<GenericBE>> dict = (Dictionary<string, List<GenericBE>>)Session["CargarCombos"];
                    lstCodigoPostal = dict["codigoPostal"].ToList();
                }
                else
                {
                    CargarDatosCombos();
                    Dictionary<string, List<GenericBE>> dict = (Dictionary<string, List<GenericBE>>)Session["CargarCombos"];
                    lstCodigoPostal = dict["codigoPostal"].ToList();
                }
                //if (Session["lstCodigoPostal"] == null)
                //{
                //    ParametroBC.Instance.getDataDDL(ref lstCodigoPostal, ref lstVendedores,
                //        ref lstBloqueoEntrega, ref lstBloqueoFactura,
                //        ref lvLstPrioridadEnt, ref lstGrupoCond, ref lstGrupoVendedores, ref lstMotivos, ref lstOficinas, ref lstSectores,
                //        ref lstTipoDocumento, ref lstTipoVisita);

                //    Session["lstCodigoPostal"] = lstCodigoPostal;
                //}
                //else
                //{
                //    lstCodigoPostal = (List<GenericBE>)Session["lstCodigoPostal"];
                //}
                //Session["lstCodigoPostal"] = lstCodigoPostal;
                if (!txtEmpresa.Text.Trim().Equals(""))
                {

                    bool es = false;
                    Doc = (DocReclamoBE)Session["DocReclamo"];
                    foreach (InterlocutorReclamoBE i in Doc.Interlocutor)
                    {
                        if (i.PARVW.Equals("AG"))
                        {
                            ag = Doc.Interlocutor.Find(x => x.PARVW.Equals("AG")).KUNNR;
                            es = ReclamoBC.Instance.getInterXEmpresa(ag, ap,
                                                                           zm, string.Empty, string.Empty, string.Empty).Find(x => x.PARVW.Equals("AG")).EsVentual;

                            if (es)
                            {
                                ag = Doc.Interlocutor.Find(x => x.PARVW.Equals("AG")).ADRNR;
                                ES = "X";
                            }
                        }
                        else if (i.PARVW.Equals("AP"))
                            ap = Doc.Interlocutor.Find(x => x.PARVW.Equals("AP")).PARNR;
                        else if (i.PARVW.Equals("ZM"))
                            zm = Doc.Interlocutor.Find(x => x.PARVW.Equals("ZM")).PERNR;
                    }
                    string mail = Doc.Interlocutor.Find(x => x.PARVW.Equals("AG")).Mail;
                    string nif = Doc.Interlocutor.Find(x => x.PARVW.Equals("AG")).NIF;
                    List<GenericBE> ladrnr = new List<GenericBE>();
                    foreach (InterlocutorReclamoBE g in Doc.Interlocutor)
                    {
                        GenericBE i = new GenericBE();
                        i.Codigo = g.PARVW;
                        i.Descripcion = g.ADRNR;
                        ladrnr.Add(i);

                    }

                    Doc.Interlocutor = ReclamoBC.Instance.getInterXEmpresa(ag, ap,
                                                                       zm, string.Empty, string.Empty, ES);

                    foreach (InterlocutorReclamoBE g in Doc.Interlocutor)
                    {
                        if (ladrnr.Find(x => x.Codigo.Equals(g.PARVW)) != null)
                        {
                            g.ADRNR = ladrnr.Find(x => x.Codigo.Equals(g.PARVW)).Descripcion.Trim();

                        }
                    }

                    if (Doc.Z_Reclamo != null)
                    {
                        lblPersonaContacto.Text = Doc.Z_Reclamo.PCONTACTO;

                        //lleno el panel de detalle
                        //txtCodPContac.Text = i.PARNR;
                        txtNomPContac.Text = Doc.Z_Reclamo.PCONTACTO;
                        txtDirPContac.Text = Doc.Z_Reclamo.DIRECCION;
                        txtNIFCont.Text = Doc.Z_Reclamo.NIF;
                        txtTelfCont.Text = Doc.Z_Reclamo.TELEFONO;
                    }
                    if (lstCodigoPostal.Find(x => x.Codigo.Equals(Doc.Z_Reclamo.CPOSTAL)) != null)
                        ddlCodpPContac.SelectedValue = Doc.Z_Reclamo.CPOSTAL;


                    foreach (InterlocutorReclamoBE i in Doc.Interlocutor)
                    {
                        if (i.PARVW.Equals("AG"))//EMPRESA 
                        {
                            txtEmpresa.Text = i.KUNNR;
                            txtNomCliente.Text = i.NOMBRE;
                            // lleno datos del panel
                            txtEmpresaDet.Text = i.KUNNR;
                            txtNomEmpresa.Text = i.NOMBRE;
                            txtDirEmpresa.Text = i.Direccion;
                            txtTelfEmpre.Text = i.Telefono;
                            txtEMail.Text = mail;
                            txtNIF.Text = nif;
                            if (lstCodigoPostal.Find(x => x.Codigo.Equals(i.CodPostal)) != null)
                                ddlCodpEmpresa.SelectedValue = i.CodPostal;
                            else
                            {
                                Session["Mensaje"] = "El código postal de la empresa no existe";
                                break;
                            }

                        }
                        else if (i.PARVW.Equals("WE"))//DESTINATARIO DE MERCANCIA
                        {
                            // lleno datos del panel
                            txtCodDestMerc.Text = i.KUNNR;
                            txtNomDestMerc.Text = i.NOMBRE;
                            txtDirDestMerc.Text = i.Direccion;
                            if (lstCodigoPostal.Find(x => x.Codigo.Equals(i.CodPostal)) != null)
                                ddlCodpDestMerc.SelectedValue = i.CodPostal;
                            else
                            {
                                Session["Mensaje"] = "El código postal del destinatario  no existe";
                            }
                        }
                        else if (i.PARVW.Equals("VE"))//ENCARGADO COMERCIAL
                        {
                            txtCodECom.Text = i.PERNR;
                            txtNomECom.Text = i.NOMBRE;
                        }
                        else if (i.PARVW.Equals("ZM"))//EMPLEADO RESPONSABLE
                        {
                            txtEmpResp.Text = i.PERNR;
                            lblEmpResp.Text = i.NOMBRE;

                            //lleno el panel de detalle
                            txtCodResPago.Text = i.PERNR;
                            txtNomResPago.Text = i.NOMBRE;
                            //txtDirResPago.Text = i.Direccion;

                        }
                    }
                    //this.bloquearCliente(true);
                    //-- habilitar codigo de cliente
                    txtEmpresa.ReadOnly = false;

                }
            }

            private List<GenericBE> getGenericBE(ParametroWS.GenericBE[] p)
            {
                List<GenericBE> g = new List<GenericBE>();
                try
                {
                    foreach (ParametroWS.GenericBE i in p)
                    {
                        GenericBE n = new GenericBE();
                        n.Codigo = i.Codigo;
                        n.Descripcion = i.Descripcion;
                        g.Add(n);
                    }
                }
                catch
                {
                    g = null;
                }
                return g;
            }

            private List<GenericBE> cargarJustificacion(string pParam, List<JustificaionBE> resJust)
            {
                List<GenericBE> rpta = new List<GenericBE>();
                DocReclamo = (DocReclamoBE)Session["DocReclamo"];
                try
                {
                    GenericBE j0 = new GenericBE();
                    j0.Codigo = "";
                    j0.Descripcion = "";
                    rpta.Add(j0);
                    foreach (JustificaionBE j in resJust)
                    {
                        if (j.CodDep.Trim().Equals(pParam))
                        {
                            GenericBE i = new GenericBE();
                            i.Codigo = j.Codigo;
                            i.Descripcion = j.Descripcion;
                            rpta.Add(i);
                        }
                    }

                   
                }
                catch (Exception ex)
                {
                    Session["Mensaje"] = ex.Message;
                }
                return rpta;
            
            }
            
            private void cargaCombos()
            {
                CombosReclamoBE combos = ReclamoBC.Instance.getCombosReclamo();
                //ParametroWS.ParametroWS p = new DECOR.WebApp.ParametroWS.ParametroWS();
                DocReclamo = (DocReclamoBE)Session["DocReclamo"];

                //justificacion
                Session["JustificResul"] = combos.T_Justi;
                Session["VENDEDORES"] = combos.T_VENDEDORES;
                //MOTIVO

                //lstMotivos.Add(objVacio);
                ddlMotivo.DataValueField = "Codigo";
                ddlMotivo.DataTextField = "Descripcion";
                ddlMotivo.DataSource = combos.T_MOTIVO;
                ddlMotivo.DataBind();
                //ddlMotivo.SelectedValue = "";
                //RESULTADO
                ddlResultado.DataValueField = "Codigo";
                ddlResultado.DataTextField = "Descripcion";
                ddlResultado.DataSource = combos.T_RESULTADO;
                ddlResultado.DataBind();
                //ddlResultado.SelectedValue = "";
                //T_SECTOR
                ddlSector.DataValueField = "Codigo";
                ddlSector.DataTextField = "Descripcion";
                ddlSector.DataSource = combos.T_SECTOR;
                ddlSector.DataBind();
                //ddlMotivo.SelectedValue = "";
                //T_STATUS
                ddlStatus.DataValueField = "Codigo";
                ddlStatus.DataTextField = "Descripcion";
                ddlStatus.DataSource = combos.T_STATUS;
                ddlStatus.DataBind();
                Session["Status"] = combos.T_STATUS;
                //rhuapaya 08.03.2012
                DropDownListStatusVisita.DataValueField = "Codigo";
                DropDownListStatusVisita.DataTextField = "Descripcion";
                DropDownListStatusVisita.DataSource = combos.T_STATUS;
                DropDownListStatusVisita.DataBind();

                //---------------------------------------------------------
                //selecciono valores
                List<GenericBE> lst = null;
                if (!(DocReclamo == null))
                {
                    if (DocReclamo.Contactos.KTAGR != null)
                        ddlMotivo.SelectedValue = DocReclamo.Contactos.KTAGR;

                    if (!DocReclamo.Contactos.KTAER.Equals(""))
                    {
                        if (Session["Operacion"] != null)
                        {
                            if (((string)Session["Operacion"]).Equals("crear") && ddlResultado.SelectedIndex == 0)
                            {
                                DocReclamo.Contactos.KTAER = "004";
                            }

                        }
                        ddlResultado.SelectedValue = DocReclamo.Contactos.KTAER;
                        lst = cargarJustificacion(ddlResultado.SelectedValue, (List<JustificaionBE>)Session["JustificResul"]);
                        if (lst.Count > 0)
                        {
                            ddlJustificResul.DataTextField = "Descripcion";
                            ddlJustificResul.DataValueField = "Codigo";
                            ddlJustificResul.DataSource = lst;
                            ddlJustificResul.DataBind();
                        }
                        if (DocReclamo != null)
                            if (!DocReclamo.Contactos.KTAEB.Equals(""))
                                ddlJustificResul.SelectedValue = DocReclamo.Contactos.KTAEB;
                        //else if (Session["Operacion"] != null)
                        //{
                        //    if (((string)Session["Operacion"]).Equals("crear"))
                        //    {
                        //        ddlJustificResul.SelectedValue = "001";
                        //    }

                        //}
                    }
                    else
                    {
                        DocReclamo.Contactos.KTAER = "004";
                        ddlResultado.SelectedValue = DocReclamo.Contactos.KTAER;
                        lst = cargarJustificacion(ddlResultado.SelectedValue, (List<JustificaionBE>)Session["JustificResul"]);
                        if (lst.Count > 0)
                        {
                            ddlJustificResul.DataTextField = "Descripcion";
                            ddlJustificResul.DataValueField = "Codigo";
                            ddlJustificResul.DataSource = lst;
                            ddlJustificResul.DataBind();
                        }
                        //DocReclamo.Contactos.KTAEB = "001";
                        //ddlJustificResul.SelectedValue = DocReclamo.Contactos.KTAEB;
                    }

                    if (!DocReclamo.Contactos.SPART.Equals(""))
                        ddlSector.SelectedValue = DocReclamo.Contactos.SPART;

                    if (!DocReclamo.Contactos.KTAST.Equals(""))
                        ddlStatus.SelectedValue = DocReclamo.Contactos.KTAST;

                }
                //-----------------------------------------------------------------------
                //panel interlocutores
                List<GenericBE> lstCodigoPostal = new List<GenericBE>();
                //if (Session["lstCodigoPostal"] == null)
                //{
                //    ParametroWS.DataDDLBE dataDDLBE = p.getDataDDL();
                //    lstCodigoPostal = getGenericBE(dataDDLBE.LstZipCodes);
                //    Session["lstCodigoPostal"] = lstCodigoPostal;
                //}
                //else
                //{
                //    lstCodigoPostal = (List < GenericBE >) Session["lstCodigoPostal"];
                //}
                if (Session["CargarCombos"] != null)
                {
                    Dictionary<string, List<GenericBE>> dict = (Dictionary<string, List<GenericBE>>)Session["CargarCombos"];
                    lstCodigoPostal = dict["codigoPostal"].ToList();
                }
                else
                {
                    CargarDatosCombos();
                    Dictionary<string, List<GenericBE>> dict = (Dictionary<string, List<GenericBE>>)Session["CargarCombos"];
                    lstCodigoPostal = dict["codigoPostal"].ToList();
                }

                ddlCodpPContac.DataValueField = "Codigo";
                ddlCodpPContac.DataTextField = "Descripcion";
                ddlCodpPContac.DataSource = lstCodigoPostal;
                ddlCodpPContac.DataBind();

                ddlCodpDestMerc.DataValueField = "Codigo";
                ddlCodpDestMerc.DataTextField = "Descripcion";
                ddlCodpDestMerc.DataSource = lstCodigoPostal;
                ddlCodpDestMerc.DataBind();

                ddlCodpEmpresa.DataValueField = "Codigo";
                ddlCodpEmpresa.DataTextField = "Descripcion";
                ddlCodpEmpresa.DataSource = lstCodigoPostal;
                ddlCodpEmpresa.DataBind();
                if (!(DocReclamo == null))
                {
                    InterlocutorReclamoBE AG = DocReclamo.Interlocutor.Find(X => X.PARVW.Equals("AG"));
                    if (AG != null)
                        if (lstCodigoPostal.Find(x => x.Codigo.Equals(AG.CodPostal)) != null && !AG.CodPostal.Equals(""))
                            ddlCodpEmpresa.SelectedValue = AG.CodPostal;

                    if (DocReclamo.Z_Reclamo.CPOSTAL != null)
                        if (!DocReclamo.Z_Reclamo.CPOSTAL.Equals(""))
                            if (lstCodigoPostal.Find(x => x.Codigo.Equals(DocReclamo.Z_Reclamo.CPOSTAL)) != null)
                                ddlCodpPContac.SelectedValue = DocReclamo.Z_Reclamo.CPOSTAL;
                }

                //ddlCodpResPago.DataValueField = "Codigo";
                //ddlCodpResPago.DataTextField = "Descripcion";
                //ddlCodpResPago.DataSource = lstCodigoPostal;
                //ddlCodpResPago.DataBind();

            }

            private void cargarInfoCliente()
            {
                //cargar data de Organización de Ventas

                //ParametroWS.ParametroWS p = new DECOR.WebApp.ParametroWS.ParametroWS();
                List<GenericBE> lstCodigoPostal = null;
                //if (Session["lstCodigoPostal"] == null)
                //{
                //    ParametroWS.DataDDLBE dataDDLBE = p.getDataDDL();
                //    lstCodigoPostal = getGenericBE(dataDDLBE.LstZipCodes);
                //    Session["lstCodigoPostal"] = lstCodigoPostal;
                //}
                //else
                //{
                //    lstCodigoPostal = (List<GenericBE>)Session["lstCodigoPostal"];
                //}
                if (Session["CargarCombos"] == null)
                {
                    CargarDatosCombos();
                    Dictionary<string, List<GenericBE>> dict = (Dictionary<string, List<GenericBE>>)Session["CargarCombos"];
                    lstCodigoPostal = dict["codigoPostal"].ToList();
                }
                else
                {
                    Dictionary<string, List<GenericBE>> dict = (Dictionary<string, List<GenericBE>>)Session["CargarCombos"];
                    lstCodigoPostal = dict["codigoPostal"].ToList();
                }
                if (Session["DocReclamo"] != null)
                {
                    DocReclamo = (DocReclamoBE)Session["DocReclamo"];
                    if (DocReclamo.Interlocutor.Count > 0)
                    {

                        List<GenericBE> lstOrgVtas = ClienteBC.Instance.listaOrgVtas(DocReclamo.Interlocutor.Find(X => X.PARVW.Equals("AG")).KUNNR);
                        ddlOrgVenta.DataValueField = "Codigo";
                        ddlOrgVenta.DataTextField = "Descripcion";
                        ddlOrgVenta.DataSource = lstOrgVtas;
                        ddlOrgVenta.DataBind();
                        if (!(DocReclamo == null))
                            if (!DocReclamo.Contactos.VKORG.Equals(""))
                                ddlOrgVenta.SelectedValue = DocReclamo.Contactos.VKORG;

                        if (lstOrgVtas.Count > 0)
                        {

                            List<GenericBE> lstCanalDist = null;
                            if (((string)Session["Operacion"]).Equals("crear"))
                                lstCanalDist = ClienteBC.Instance.listaCanalDist(DocReclamo.Interlocutor.Find(X => X.PARVW.Equals("AG")).KUNNR,
                                                                                 ddlOrgVenta.SelectedValue);
                            else if (((string)Session["Operacion"]).Equals("editar"))
                                lstCanalDist = ClienteBC.Instance.listaCanalDist(DocReclamo.Interlocutor.Find(X => X.PARVW.Equals("AG")).KUNNR,
                                                                                 DocReclamo.Contactos.VKORG);
                            ddlCanal.DataValueField = "Codigo";
                            ddlCanal.DataTextField = "Descripcion";
                            ddlCanal.DataSource = lstCanalDist;
                            ddlCanal.DataBind();
                            //if (((string)Session["Operacion"]).Equals("editar"))
                            if (!(DocReclamo == null))
                            {
                                if (lstCanalDist.Find(x => x.Codigo.Equals(DocReclamo.Contactos.VTWEG)) != null)
                                    if (!DocReclamo.Contactos.VTWEG.Equals(""))
                                        ddlCanal.SelectedValue = DocReclamo.Contactos.VTWEG;
                            }
                        }
                        else
                        {
                            ddlCanal.DataValueField = "Codigo";
                            ddlCanal.DataTextField = "Descripcion";
                            ddlCanal.DataSource = new List<GenericBE>();
                            ddlCanal.DataBind();
                        }

                        //Oficina de Ventas
                        //ClienteWS.ClienteWS OfiVenta = new DECOR.WebApp.ClienteWS.ClienteWS();
                        //List<GenericBE> lst = getGenericBE(OfiVenta.listar());
                        List<GenericBE> lst = new List<GenericBE>();
                        lst = OficinaBC.Instance.listar();

                        ddlOfiVenta.DataValueField = "Codigo";
                        ddlOfiVenta.DataTextField = "Descripcion";
                        ddlOfiVenta.DataSource = lst;
                        ddlOfiVenta.DataBind();
                        //ddlOfiVenta.SelectedValue = "";
                        //if (((string)Session["Operacion"]).Equals("editar"))
                        if (!(DocReclamo == null))
                            if (!DocReclamo.Contactos.VKBUR.Equals(""))
                                ddlOfiVenta.SelectedValue = DocReclamo.Contactos.VKBUR;
                        if (Session["Operacion"] != null)
                            if (((string)Session["Operacion"]).Equals("crear"))
                            {
                                RfcConfigParametersBE objUsuarioWeb = (RfcConfigParametersBE)Session["UsuarioWeb"];
                                if (!objUsuarioWeb.OfVentas.Equals("") && DocReclamo.Contactos.VKBUR.Equals(""))
                                    ddlOfiVenta.SelectedValue = objUsuarioWeb.OfVentas.Trim();

                            }
                    }
                    else //si no existe el cliente seleccionado:
                    {
                        ddlOrgVenta.DataValueField = "Codigo";
                        ddlOrgVenta.DataTextField = "Descripcion";
                        ddlOrgVenta.DataSource = new List<GenericBE>();
                        ddlOrgVenta.DataBind();

                        ddlCanal.DataValueField = "Codigo";
                        ddlCanal.DataTextField = "Descripcion";
                        ddlCanal.DataSource = new List<GenericBE>();
                        ddlCanal.DataBind();

                    }
                }
            }

            private void manejarBotonera()
            {
                string op = "";
                if (Session["Operacion"] != null)
                {
                    op = Session["Operacion"].ToString().ToLower();
                    switch (op)
                    {
                        case "crear":
                        case "editar":
                            btnGrabar.Enabled = true;
                            btnGrabar.ImageUrl = "~/img/save.png";
                            btnCancel.Enabled = true;
                            btnCancel.ImageUrl = "~/img/cancel.png";
                            //---
                            btnEditar.Enabled = false;
                            btnEditar.ImageUrl = "~/img/edit.dis.png";
                            btnCrear.Enabled = false;
                            btnCrear.ImageUrl = "~/img/new.dis.png";
                            //---
                            
                            txtNumReclamo.ReadOnly = true;
                            //----------------

                            btnValidar.Enabled = true;
                            btnValidar.ImageUrl = "~/img/verify.png";

                            btnImprimir.Enabled = true;
                            //btnImprimir.ImageUrl = "~/img/print.dis.png";
                            
                            tcMain.Enabled = true;
                            tcMain.TabIndex = 0;
                            break;
                        default:
                            btnGrabar.Enabled = false;
                            btnGrabar.ImageUrl = "~/img/save.dis.png";
                            btnCancel.Enabled = false;
                            btnCancel.ImageUrl = "~/img/cancel.dis.png";

                            btnEditar.Enabled = true;
                            btnEditar.ImageUrl = "~/img/edit.png";
                            btnCrear.Enabled = true;
                            btnCrear.ImageUrl = "~/img/new.png";

                            btnValidar.Enabled = false;
                            btnValidar.ImageUrl = "~/img/verify.dis.png";

                            btnImprimir.Enabled = true;
                            btnImprimir.ImageUrl = "~/img/print.png";
                            //---
                            txtNumReclamo.ReadOnly = true;
                            tcMain.Enabled = false;
                            //lnkShowPopUpInt.Enabled = false;
                            tcMain.TabIndex = 0;
                            //---
                            ddlStatus.Enabled = true;
                            ddlResultado.Enabled = true;
                            ddlMotivo.Enabled = true;
                            ddlJustificResul.Enabled = true;
                            ddlCodpDestMerc.Enabled = true;
                            txtCodDestMerc.Enabled = true;
                            txtCodECom.Enabled = true;
                            //txtCodPContac.Enabled = true;
                            txtCodResPago.Enabled = true;
                            txtComantario.Enabled = true;
                            txtDescripcion.Enabled = true;
                            txtDescripcion.Enabled = true;
                            txtDirDestMerc.Enabled = true;
                            txtDirEmpresa.Enabled = true;
                            txtDirPContac.Enabled = true;
                            txtEmpresa.Enabled = true;
                            txtEmpresaDet.Enabled = true;
                            txtEmpResp.Enabled = true;
                            txtFechaF.Enabled = true;
                            txtFechaI.Enabled = true;
                            txtFechaSts.Enabled = true;
                            txtHoraReclamoF.Enabled = true;
                            txtHoraReclamoI.Enabled = true;
                            txtNomDestMerc.Enabled = true;
                            txtNomECom.Enabled = true;
                            txtNomEmpresa.Enabled = true;
                            txtNomPContac.Enabled = true;
                            txtNomResPago.Enabled = true;
                            txtNroPedido.Enabled = true;
                            txtNumReclamo.Enabled = true;
                            txtPersonaContacto.Enabled = true;
                            txtReclaRef.Enabled = true;
                            txtTextoDatosFacturacion.Enabled = true;
                            txtTextoDiagnostico.Enabled = true;
                            txtTextoMotivosOtros.Enabled = true;
                            txtTextoNotaDireccion.Enabled = true;
                            txtTextoPedidoReferencia.Enabled = true;
                            txtTextoPersonaContacto.Enabled = true;
                            txtTextoSeguimiento.Enabled = true;
                            txtTextoSolucion.Enabled = true;
                            txtTextoTratemInicial.Enabled = true;
                            txtUsuarioStatus.Enabled = true;
                            btnGrabar.Enabled = true;
                            btnEditar.Enabled = true;
                            txtTelfEmpre.Enabled = true;
                            ddlOfiVenta.Enabled = true;
                            break;
                    }

                }
                else
                {
                    btnGrabar.Enabled = false;
                    btnGrabar.ImageUrl = "~/img/save.dis.png";
                    btnCancel.Enabled = false;
                    btnCancel.ImageUrl = "~/img/cancel.dis.png";
                    //---
                    btnEditar.Enabled = true;
                    btnEditar.ImageUrl = "~/img/edit.png";
                    btnCrear.Enabled = true;
                    btnCrear.ImageUrl = "~/img/new.png";


                    btnValidar.Enabled = false;
                    btnValidar.ImageUrl = "~/img/verify.dis.png";

                    btnImprimir.Enabled = true;
                    btnImprimir.ImageUrl = "~/img/print.png";
                    //---
                    txtNumReclamo.ReadOnly = false;
                    tcMain.Enabled = false;
                    //lnkShowPopUpInt.Enabled = false;
                    tcMain.TabIndex = 0;
                    //---
                    //ddlOrgVtas.Enabled = true;
                    //ddlCanalDist.Enabled = true;
                    //ddlSector.Enabled = true;

                }

                if (Session["Pedido"] != null)
                {
                    //PedidoBE obj = (PedidoBE)Session["Pedido"];

                }
            }

            private void activarCampos(bool op)
            {
                //desactivar campos 
                ddlOrgVenta.Enabled = op;
                ddlCanal.Enabled = op;
                ddlSector.Enabled = op;
                txtEmpresa.Enabled = op;
                txtTelfEmpre.Enabled = op;
                txtNroPedido.Enabled = op;
                txtMaterial.Enabled = op;
                txtMaterial2.Enabled = op;
                txtReclaRef.Enabled = op;
                txtNomCliente.Enabled = op;
                txtEmpresa.Enabled = op;
                txtEmpResp.Enabled = op;
                if (((string)Session["Operacion"]).Equals("editar") || ((string)Session["Operacion"]).Equals("crear"))
                {
                    txtNIF.Enabled = true;
                    txtEMail.Enabled = true;
                    txtTelfEmpre.Enabled = true;

                    txtNIF.Enabled = false;
                    txtEMail.Enabled = false;
                    txtTelfEmpre.Enabled = false;

                    ddlCodpDestMerc.Enabled = false;
                    ddlCodpEmpresa.Enabled = false;

                    txtNroPedido.Enabled = true;
                    txtMaterial.Enabled = true;
                    txtMaterial2.Enabled = true;
                    txtReclaRef.Enabled = true;

                    txtNomPContac.Enabled = true;
                    txtDirPContac.Enabled = true;
                    ddlCodpPContac.Enabled = true;
                    txtTelfCont.Enabled = true;
                    txtNIFCont.Enabled = true;

                    txtTextoDatosFacturacion.Enabled = true;
                    txtTextoDiagnostico.Enabled = true;
                    txtTextoMotivosOtros.Enabled = true;
                    txtTextoNotaDireccion.Enabled = true;
                    txtTextoPedidoReferencia.Enabled = true;
                    txtTextoPersonaContacto.Enabled = true;
                    txtTextoSeguimiento.Enabled = true;
                    txtTextoSolucion.Enabled = true;
                    txtTextoTratemInicial.Enabled = true;
                    txtEMail.Enabled = true;
                    ddlCodpPContac.Enabled = true;
                    ddlCanal.Enabled = true;
                    ddlJustificResul.Enabled = true;
                    ddlMotivo.Enabled = true;
                    ddlOfiVenta.Enabled = true;
                    ddlOrgVenta.Enabled = true;
                    ddlResultado.Enabled = true;
                    ddlSector.Enabled = true;
                    ddlStatus.Enabled = true;
                    txtFechaF.Enabled = false; //cambiado a pedido del cliente, solo de lectura
                    txtFechaI.Enabled = false; //cambiado a pedido del cliente, solo de lectura
                    txtFechaSts.Enabled = true;
                    txtHoraReclamoF.Enabled = true;
                    txtHoraReclamoI.Enabled = true;
                    txtComantario.Enabled = true;
                }
                //bloquear campos para visualizar
                if (((string)Session["Operacion"]).Equals("Ver"))
                {
                    txtNIF.Enabled = false;
                    txtEMail.Enabled = false;
                    txtTelfEmpre.Enabled = false;                    
                    ddlStatus.Enabled = false;
                    ddlResultado.Enabled = false;
                    ddlMotivo.Enabled = false;
                    ddlJustificResul.Enabled = false;
                    ddlCodpPContac.Enabled = false;
                    ddlCodpDestMerc.Enabled = false;
                    txtCodDestMerc.Enabled = false;
                    txtCodECom.Enabled = false;
                    //txtCodPContac.Enabled = false;
                    txtCodResPago.Enabled = false;
                    txtComantario.Enabled = false;
                    txtDescripcion.Enabled = false;
                    txtDescripcion.Enabled = false;
                    txtDirDestMerc.Enabled = false;
                    txtDirEmpresa.Enabled = false;
                    txtDirPContac.Enabled = false;
                    txtEmpresa.Enabled = false;
                    txtEmpresaDet.Enabled = false;
                    txtEmpResp.Enabled = false;
                    txtFechaF.Enabled = false;
                    txtFechaI.Enabled = false;
                    txtFechaSts.Enabled = false;
                    txtHoraReclamoF.Enabled = false;
                    txtHoraReclamoI.Enabled = false;
                    txtNomDestMerc.Enabled = false;
                    txtTelfEmpre.Enabled = false;
                    txtNomECom.Enabled = false;
                    txtNomEmpresa.Enabled = false;
                    txtNomPContac.Enabled = false;
                    txtNomResPago.Enabled = false;
                    txtNroPedido.Enabled = false;
                    txtNumReclamo.Enabled = false;
                    txtPersonaContacto.Enabled = false;
                    txtReclaRef.Enabled = false;
                    txtTextoDatosFacturacion.Enabled = false;
                    txtTextoDiagnostico.Enabled = false;
                    txtTextoMotivosOtros.Enabled = false;
                    txtTextoNotaDireccion.Enabled = false;
                    txtTextoPedidoReferencia.Enabled = false;
                    txtTextoPersonaContacto.Enabled = false;
                    txtTextoSeguimiento.Enabled = false;
                    txtTextoSolucion.Enabled = false;
                    txtTextoTratemInicial.Enabled = false;
                    txtUsuarioStatus.Enabled = false;
                    btnGrabar.Enabled = false;
                    btnEditar.Enabled = false;
                    ddlOfiVenta.Enabled = false;
                    //-----------------------------------------------------
                    btnEditar.Enabled = false;
                    btnEditar.ImageUrl = "~/img/edit.dis.png";
                    btnCrear.Enabled = false;
                    btnCrear.ImageUrl = "~/img/new.dis.png";

                    //btnImprimir.Enabled = true;
                    ////btnImprimir.ImageUrl = "~/img/print.dis.png";
                    
                    btnGrabar.Enabled = false;
                    btnGrabar.ImageUrl = "~/img/save.dis.png";

                    btnValidar.Enabled = false;
                    btnValidar.ImageUrl = "~/img/verify.dis.png";
                }
            }

            private void cargarReclamo() {
                string retval = string.Empty;
                DocReclamoBE Doc = (DocReclamoBE)Session["DocReclamo"];
                txtNumReclamo.Text = Doc.Contactos.VBELN.PadLeft(10, '0');
                //ParametroWS.ParametroWS p = new DECOR.WebApp.ParametroWS.ParametroWS();
                List<GenericBE> lstOficinas = new List<GenericBE>();
                List<GenericBE> lstTipoDocumento = new List<GenericBE>();
                List<GenericBE> lstGrupoVendedores = new List<GenericBE>();
                List<GenericBE> lstSectores = new List<GenericBE>();
                List<GenericBE> lstMotivos = new List<GenericBE>();
                List<GenericBE> lstGrupoCond = new List<GenericBE>();
                List<GenericBE> lstBloqueoEntrega = new List<GenericBE>();
                List<GenericBE> lstBloqueoFactura = new List<GenericBE>();
                List<GenericBE> lstVendedores = new List<GenericBE>();
                List<GenericBE> lstCodigoPostal = new List<GenericBE>();
                List<GenericBE> lstTipoVisita = new List<GenericBE>();
                List<GenericBE> lvLstPrioridadEnt = new List<GenericBE>();
                //if (Session["lstCodigoPostal"] == null)
                //{
                //    //ParametroWS.DataDDLBE dataDDLBE = p.getDataDDL();
                //    //lstCodigoPostal = getGenericBE(dataDDLBE.LstZipCodes);
                //    //Session["lstCodigoPostal"] = lstCodigoPostal;
                //    ParametroBC.Instance.getDataDDL(ref lstCodigoPostal, ref lstVendedores,
                //        ref lstBloqueoEntrega, ref lstBloqueoFactura,
                //        ref lvLstPrioridadEnt, ref lstGrupoCond, ref lstGrupoVendedores, ref lstMotivos, ref lstOficinas, ref lstSectores,
                //        ref lstTipoDocumento, ref lstTipoVisita);

                //    Session["lstCodigoPostal"] = lstCodigoPostal;
                //}
                //else
                //{
                //    lstCodigoPostal = (List<GenericBE>)Session["lstCodigoPostal"];
                //}
                if (Doc != null)
                {
                    Session["Operacion"] = "editar";

                    txtFechaI.Text = Doc.Contactos.KTABG.ToShortDateString();
                    txtFechaF.Text = Doc.Contactos.KTAEN.ToShortDateString();
                    txtHoraReclamoI.Text = Doc.Contactos.KTABT;
                    txtHoraReclamoF.Text = Doc.Contactos.KTAET;
                    txtEmpresa.Text = Doc.Contactos.KUNNR;
                    txtNroPedido.Text = Doc.Contactos.VGBEL.PadLeft(10, '0');
                    txtComantario.Text = Doc.Contactos.KTEXT.Trim();
                    //Tabla Z
                    txtMaterial.Text =Doc.Z_Reclamo.MATNR == null ? "": Doc.Z_Reclamo.MATNR.Trim('0');
                    txtMaterial2.Text = Doc.Z_Reclamo.MATNR2== null ? "": Doc.Z_Reclamo.MATNR2.Trim('0');
                    txtReclaRef.Text = Doc.Z_Reclamo.RECLA== null ? "": Doc.Z_Reclamo.RECLA.Trim('0');

                    // Textos
                    foreach (TextoBE t in Doc.Texto)
                    {
                        if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO1")))
                            txtTextoTratemInicial.Text = t.Descripcion;
                        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO2")))
                            txtTextoNotaDireccion.Text = t.Descripcion;
                        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO3")))
                            txtTextoSeguimiento.Text = t.Descripcion;
                        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO4")))
                            txtTextoDiagnostico.Text = t.Descripcion;
                        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO5")))
                            txtTextoSolucion.Text = t.Descripcion;
                        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO6")))
                            txtTextoPersonaContacto.Text = t.Descripcion;
                        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO7")))
                            txtTextoDatosFacturacion.Text = t.Descripcion;
                        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO8")))
                            txtTextoPedidoReferencia.Text = t.Descripcion;
                        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO9")))
                            txtTextoMotivosOtros.Text = t.Descripcion;
                    }
                    //interlocutores
                    cargarDatosInter();
                    cargarInfoCliente();
                    //combos
                    cargaCombos();
                    //-------------
                    //********************************************************************************
                    //rhuapaya 07.03.2012
                    Session["Visitas"] = Doc.Z_ReclamoVisita;
                    InsertarDescripcionEstadoVisitas();
                    //GridViewVisitas.DataSource = Doc.Z_ReclamoVisita;
                    //GridViewVisitas.DataBind();
                    //********************************************************************************
                    tcMain.Enabled = true;
                    manejarBotonera();
                    //seleccionar grupo vendedores
                    if (((string)Session["Operacion"]).Equals("editar") || ((string)Session["Operacion"]).Equals("veer"))
                    {
                        ddlResultado.SelectedValue = DocReclamo.Contactos.KTAER;
                        ddlMotivo.SelectedValue = Doc.Contactos.KTAGR;
                        //estatus
                        ddlStatus.SelectedValue = DocReclamo.Contactos.KTAST;
                        if (DocReclamo.Z_Reclamo.STAT4 != null && DocReclamo.Z_Reclamo.STAT3 != null && DocReclamo.Z_Reclamo.STAT2 != null && DocReclamo.Z_Reclamo.STAT1 != null)
                        {
                            if (!DocReclamo.Z_Reclamo.STAT4.Equals("") &&
                                ((ParametroBC.Instance.esTipoX(DocReclamo.Contactos.KTAST, "Sts5"))))
                            {
                                txtUsuarioStatus.Text = DocReclamo.Z_Reclamo.USER4;
                                txtDescripcion.Text = DocReclamo.Z_Reclamo.CMM4;
                                txtFechaSts.Text = DocReclamo.Z_Reclamo.FCHA4.ToShortDateString();
                            }
                            else if (!DocReclamo.Z_Reclamo.STAT3.Equals("") && 
                                ((ParametroBC.Instance.esTipoX(DocReclamo.Contactos.KTAST, "Sts3")) || 
                                    (ParametroBC.Instance.esTipoX(DocReclamo.Contactos.KTAST, "Sts4"))))
                            {
                                txtUsuarioStatus.Text = DocReclamo.Z_Reclamo.USER3;
                                txtDescripcion.Text = DocReclamo.Z_Reclamo.CMM3;
                                txtFechaSts.Text = DocReclamo.Z_Reclamo.FCHA3.ToShortDateString();
                            }
                            else if (!DocReclamo.Z_Reclamo.STAT2.Equals("") &&
                                (ParametroBC.Instance.esTipoX(DocReclamo.Contactos.KTAST, "Sts2")))
                            {
                                txtUsuarioStatus.Text = DocReclamo.Z_Reclamo.USER2;
                                txtDescripcion.Text = DocReclamo.Z_Reclamo.CMM2;
                                txtFechaSts.Text = DocReclamo.Z_Reclamo.FCHA2.ToShortDateString();
                            }
                            else if (!DocReclamo.Z_Reclamo.STAT1.Equals("") &&
                                (ParametroBC.Instance.esTipoX(DocReclamo.Contactos.KTAST, "Sts1")))
                            {
                                txtUsuarioStatus.Text = DocReclamo.Z_Reclamo.USER1;
                                txtDescripcion.Text = DocReclamo.Z_Reclamo.CMM1;
                                txtFechaSts.Text = DocReclamo.Z_Reclamo.FCHA1.ToShortDateString();
                            }
                        }
                    }
                }
            }

            private void guardarReclamo()
            {
                
                GenericBE g = null;
                DocReclamoBE Doc = null;
                Session["Mensaje"] = string.Empty;
                if (Session["DocReclamo"] != null)
                {
                    CredencialesController.Usuario = (RfcConfigParametersBE)Session["UsuarioWeb"];
                    Doc = (DocReclamoBE)Session["DocReclamo"];


                    Doc.Contactos.AEDAT = DateTime.Today.Date;
                    Doc.Contactos.AEZET = DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second;
                    Doc.Contactos.AENAM = CredencialesController.Usuario.Uname.ToUpper();
                    Doc.Contactos.KTAAR = ParametroBC.Instance.getParamValue("CodReclamo");
                    Doc.Contactos.VKBUR = ddlOfiVenta.SelectedValue.ToString();
                    //Doc.Contactos.VKGRP = ddlGrupoVend.SelectedValue.ToString();
                    Doc.Contactos.KTABG = DateTime.Parse(txtFechaI.Text.Trim());
                    Doc.Contactos.KTAEN = DateTime.Parse(txtFechaF.Text.Trim());
                    Doc.Contactos.KTABT = txtHoraReclamoI.Text.Trim();
                    Doc.Contactos.KTAET = txtHoraReclamoF.Text.Trim();
                    Doc.Contactos.KTAGR = ddlMotivo.SelectedValue.ToString();
                    Doc.Contactos.KTAER = ddlResultado.SelectedValue.ToString();
                    Doc.Contactos.KTAFK = ParametroBC.Instance.getParamValue("CodReclamo");
                    Doc.Contactos.KTAEB = ddlJustificResul.SelectedValue;
                    Doc.Contactos.KTEXT = txtComantario.Text;
                    Doc.Contactos.VGBEL = txtNroPedido.Text.Trim().PadLeft(10, '0');
                    
                                       
                    if (((string)Session["Operacion"]).Equals("crear"))
                    {
                        
                        Doc.Contactos.ERDAT = DateTime.Today.Date;
                        Doc.Contactos.ERZET = DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second;
                        Doc.Contactos.ERNAM = CredencialesController.Usuario.Uname.ToUpper();
                        Doc.Contactos.VBTYP = "1";
                        Doc.Contactos.TRVOG = "9";
                        Doc.Contactos.VKORG = ddlOrgVenta.SelectedValue.ToString();
                        Doc.Contactos.VTWEG = ddlCanal.SelectedValue.ToString();
                        Doc.Contactos.SPART = ddlSector.SelectedValue.ToString();
                        Doc.Contactos.KTAST = "0";
                        Doc.Contactos.KUNNR = txtEmpresa.Text.Trim();
                        Doc.Contactos.GBSTK = "A";
                        Doc.Contactos.PARVW = "AG";
                        //Doc.Contactos.DIRECTION = "1";
                        Doc.Contactos.KTEXT_MC = txtNroPedido.Text.Trim() + "/" + txtMaterial2.Text.Trim().PadLeft(10, '0');
                        Doc.Contactos.KTEXT_MC_LANGU = ParametroBC.Instance.getParamValue("Idioma");
                        
                        //Fxvbuk: Documento comercial: Status cabecera y datos gestión                            
                        Doc.DocComercial.GBSTK = "A";
                        Doc.DocComercial.UVALL = "C";
                        Doc.DocComercial.VBTYP = "1";
                        Doc.DocComercial.VBOBJ = "K";
                        //Fxvbpa: interlocutor
                    }
                    // Textos

                        //Tabla Z
                        Doc.Z_Reclamo.MATNR = txtMaterial.Text.Trim().PadLeft(18, '0');
                        Doc.Z_Reclamo.MATNR2 = txtMaterial2.Text.Trim().PadLeft(18, '0');
                        Doc.Z_Reclamo.RECLA = txtReclaRef.Text.Trim().PadLeft(10, '0');
                        Doc.Texto.Clear();
                    TextoBE txt1 = new TextoBE();
                    txt1.CodTexto = ParametroBC.Instance.getParamValue("TEXTO1");
                    txt1.Descripcion = txtTextoTratemInicial.Text.Trim();
                    Doc.Texto.Add(txt1);

                    TextoBE txt2 = new TextoBE();
                    txt2.CodTexto = ParametroBC.Instance.getParamValue("TEXTO2");
                    txt2.Descripcion = txtTextoNotaDireccion.Text.Trim();
                    Doc.Texto.Add(txt2);

                    TextoBE txt3 = new TextoBE();
                    txt3.CodTexto = ParametroBC.Instance.getParamValue("TEXTO3");
                    txt3.Descripcion = txtTextoSeguimiento.Text.Trim();
                    Doc.Texto.Add(txt3);

                    TextoBE txt4 = new TextoBE();
                    txt4.CodTexto = ParametroBC.Instance.getParamValue("TEXTO4");
                    txt4.Descripcion = txtTextoDiagnostico.Text.Trim();
                    Doc.Texto.Add(txt4);

                    TextoBE txt5 = new TextoBE();
                    txt5.CodTexto = ParametroBC.Instance.getParamValue("TEXTO5");
                    txt5.Descripcion = txtTextoSolucion.Text.Trim();
                    Doc.Texto.Add(txt5);

                    TextoBE txt6 = new TextoBE();
                    txt6.CodTexto = ParametroBC.Instance.getParamValue("TEXTO6");
                    txt6.Descripcion = txtTextoPersonaContacto.Text.Trim();
                    Doc.Texto.Add(txt6);

                    TextoBE txt7 = new TextoBE();
                    txt7.CodTexto = ParametroBC.Instance.getParamValue("TEXTO7");
                    txt7.Descripcion = txtTextoDatosFacturacion.Text.Trim();
                    Doc.Texto.Add(txt7);

                    TextoBE txt8 = new TextoBE();
                    txt8.CodTexto = ParametroBC.Instance.getParamValue("TEXTO8");
                    txt8.Descripcion = txtTextoPedidoReferencia.Text.Trim();
                    Doc.Texto.Add(txt8);

                    TextoBE txt9 = new TextoBE();
                    txt9.CodTexto = ParametroBC.Instance.getParamValue("TEXTO9");
                    txt9.Descripcion = txtTextoMotivosOtros.Text.Trim();
                    Doc.Texto.Add(txt9);

                    // interlocutores
                    InterlocutorReclamoBE I1 = Doc.Interlocutor.Find(X => (X.PARVW.Equals("AG")));
                    if (I1 != null && !txtNomEmpresa.Text.Equals(""))
                    {
                        //I1 = new InterlocutorReclamoBE();
                        I1.CodPostal = ddlCodpEmpresa.SelectedValue;
                        I1.Direccion = txtDirEmpresa.Text;
                        I1.Ciudad = ddlCodpEmpresa.Text;
                        I1.Land1 = "PE";
                        I1.Name1 = txtNomEmpresa.Text;
                        I1.Telefono = txtTelfEmpre.Text;
                        I1.Telfx = txtTelfEmpre.Text;
                        I1.Mail = txtEMail.Text.Trim();
                        I1.NIF = txtNIF.Text.Trim();
                    }
                    g = new GenericBE();
                    Doc.Z_Reclamo.CPOSTAL = ddlCodpPContac.SelectedValue;
                    Doc.Z_Reclamo.DIRECCION = txtDirPContac.Text;
                    Doc.Z_Reclamo.NIF = txtNIFCont.Text;
                    Doc.Z_Reclamo.PCONTACTO = txtNomPContac.Text;
                    Doc.Z_Reclamo.TELEFONO = txtTelfCont.Text;
                    if (((string)Session["Operacion"]).Equals("editar"))
                    {
                        //valido el status
                        //if ((int.Parse(Doc.Contactos.KTAST) <= int.Parse(ddlStatus.SelectedValue)))
                        //***************************************************************************
                        //cambio realizado el 22.03.2012 Rhuapaya
                        //descripción: el cambio es para todos los estados
                        //***************************************************************************
                        if (ParametroBC.Instance.esTipoX(ddlStatus.SelectedValue, "Sts1"))
                        {
                            Doc.Z_Reclamo.STAT1 = ddlStatus.SelectedValue;
                            Doc.Z_Reclamo.USER1 = txtUsuarioStatus.Text;
                            Doc.Z_Reclamo.FCHA1 = DateTime.Parse(txtFechaSts.Text == "" ? "01/01/0001" : txtFechaSts.Text);
                            if (!txtFechaSts.Text.Equals(""))
                                Doc.Z_Reclamo.CMM1 = txtDescripcion.Text;
                        }
                        else if (ParametroBC.Instance.esTipoX(ddlStatus.SelectedValue, "Sts2"))
                        {
                            Doc.Z_Reclamo.STAT2 = ddlStatus.SelectedValue;
                            Doc.Z_Reclamo.USER2 = txtUsuarioStatus.Text;
                            Doc.Z_Reclamo.CMM2 = txtDescripcion.Text;
                            if (!txtFechaSts.Text.Equals(""))
                                Doc.Z_Reclamo.FCHA2 = DateTime.Parse(txtFechaSts.Text == "" ? "01/01/0001" : txtFechaSts.Text);
                        }
                        else if ((ParametroBC.Instance.esTipoX(ddlStatus.SelectedValue, "Sts3")) || (ParametroBC.Instance.esTipoX(ddlStatus.SelectedValue, "Sts4")))
                        {
                            Doc.Z_Reclamo.STAT3 = ddlStatus.SelectedValue;
                            Doc.Z_Reclamo.USER3 = txtUsuarioStatus.Text;
                            Doc.Z_Reclamo.CMM3 = txtDescripcion.Text;
                            if (!txtFechaSts.Text.Equals(""))
                                Doc.Z_Reclamo.FCHA3 = DateTime.Parse(txtFechaSts.Text == "" ? "01/01/0001" : txtFechaSts.Text);
                        }
                        else if (ParametroBC.Instance.esTipoX(ddlStatus.SelectedValue, "Sts5"))
                        {
                            Doc.Z_Reclamo.STAT4 = ddlStatus.SelectedValue;
                            Doc.Z_Reclamo.USER4 = txtUsuarioStatus.Text;
                            Doc.Z_Reclamo.CMM4 = txtDescripcion.Text;
                            if (!txtFechaSts.Text.Equals(""))
                                Doc.Z_Reclamo.FCHA4 = DateTime.Parse(txtFechaSts.Text == "" ? "01/01/0001" : txtFechaSts.Text);
                        }

                        Doc.Contactos.KTAST = ddlStatus.SelectedValue;
                    }
                }
                Session["DocReclamo"] = Doc;
            }

            private void limpiar()
            {
                txtNIFCont.Text = string.Empty;
                txtNomPContac.Text = string.Empty;
                txtTelfCont.Text = string.Empty;
                
                txtTelfEmpre.Text = string.Empty;
                txtEMail.Text = string.Empty;
                txtNIF.Text = string.Empty;   
                txtTelfEmpre.Text = string.Empty;
                txtEmpresa.Text = string.Empty;
                txtNomCliente.Text = string.Empty;
                txtEmpresaDet.Text = string.Empty;
                txtNomEmpresa.Text = string.Empty;
                txtDirEmpresa.Text = string.Empty;
                txtCodDestMerc.Text = string.Empty;
                txtNomDestMerc.Text = string.Empty;
                txtDirDestMerc.Text = string.Empty;
                txtPersonaContacto.Text = string.Empty;
                lblPersonaContacto.Text = string.Empty;
                //txtCodPContac.Text = string.Empty;
                txtNomPContac.Text = string.Empty;
                txtDirPContac.Text = string.Empty;
                txtCodECom.Text = string.Empty;
                txtNomECom.Text = string.Empty;
                txtEmpResp.Text = string.Empty;
                lblEmpResp.Text = string.Empty;
                txtCodResPago.Text = string.Empty;
                txtNomResPago.Text = string.Empty;
                //txtDirResPago.Text = string.Empty;
                lblPersonaContacto.Text = string.Empty;
                lblEmpResp.Text = string.Empty;
                txtNomCliente.Text = string.Empty;
                lblNroPedido.Text = string.Empty;
                lblMaterial1.Text = string.Empty;
                lblMaterial2.Text = string.Empty;

                ddlCodpPContac.SelectedValue = "";
                ddlCodpEmpresa.SelectedValue = "";
            }
            
            private void validarTodo()
            {
                
                try
                {
                    //this.limpiarInterlocutores();
                    //this.limpiarClienteEventual();
                    //this.limpiarCliente();
                    //ddlVendedor3.Enabled = false;
                    txtFechaI.Text = DateTime.Today.ToString("dd/MM/yyyy");
                    txtHoraReclamoI.Text = DateTime.Now.TimeOfDay.ToString().Substring(0, 8);
                    txtFechaF.Text = DateTime.Today.ToString("dd/MM/yyyy");
                    txtHoraReclamoF.Text = DateTime.Now.TimeOfDay.ToString().Substring(0, 8);
                    lblMaterial1.Text = "";
                    lblMaterial2.Text = "";
                    lblNroPedido.Text = "";
                    DocReclamoBE Doc = null;
                    if (Session["DocReclamo"] != null)
                    {
                        Doc = (DocReclamoBE)Session["DocReclamo"];
                        if (!txtEmpresa.Text.Trim().Equals(""))
                        {
                            validaInterlocutores();
                            //this.bloquearCliente(true);
                            //-- habilitar codigo de cliente
                            txtEmpresa.ReadOnly = false;
                            
                        }
                        if (Session["Mensaje"] != null)
                            if (((string)Session["Mensaje"]).Equals(""))
                                Session["Mensaje"] = null;
                        if (Session["Mensaje"] == null)
                        {
                            guardarReclamo();
                            this.cargarInfoCliente();
                            this.cargaCombos();
                            lblStatus.Text = ddlStatus.SelectedItem.ToString();
                            //rhuapaya 08.03.2012
                            DropDownListStatusVisita.SelectedValue = ddlStatus.SelectedValue;
                            //*******************************************************
                            //valido materiales, pedido 
                            validaDatosMP();
                        }
                    }

                }
                catch (Exception ex)
                {
                    string str = (Session["Mensaje"] != null ? Session["Mensaje"].ToString() : "");
                    Session["Mensaje"] = string.IsNullOrEmpty(str) ? ex.Message : str + "\r\n" + ex.Message;
                }
                finally
                {
                    ((Site)Master).muestraMensajes();
                    upBotones.Update();
                    upMain.Update();
                }
            }


            private void cargaDatosUsuario()
            {
                if (Session["UsuarioWeb"] != null)
                {
                    //string pCodOfVtas = "", pCodGrupoVend = "";
                    RfcConfigParametersBE objUsuarioWeb = (RfcConfigParametersBE)Session["UsuarioWeb"];
                    PersonaBE objPersonaWeb = (PersonaBE)Session["PersonaWeb"];
                    //PersonaBC.Instance.getInfoUsuario(objUsuarioWeb.PerNr, out pCodOfVtas, out pCodGrupoVend);

                    txtEmpResp.Text = objPersonaWeb.CodPersona;
                    lblEmpResp.Text = objPersonaWeb.Descripcion;
                    
                }
            }
        #endregion

        #region WS
            [System.Web.Services.WebMethod]
            [System.Web.Script.Services.ScriptMethod]
            public static string[] buscaClientes(string prefixText, int count)
            {
                string[] retVal;
                List<ClienteBE> lstClientes = ClienteBC.Instance.buscar(prefixText);
                List<string> lst = new List<string>();
                int total = lstClientes.Count < count ? lstClientes.Count : count;
                for (int i = 0; i < total; i++)
                {
                    string item = AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem(lstClientes[i].Descripcion, lstClientes[i].Codigo);
                    lst.Add(item);
                }
                retVal = lst.ToArray();
                return retVal;
            }

            [System.Web.Services.WebMethod]
            [System.Web.Script.Services.ScriptMethod]
            public static string[] buscaProfesionales(string prefixText, int count)
            {
                string[] retVal;
                List<PersonaBE> lstProfesionales = PersonaBC.Instance.listarProfesionales(prefixText);
                List<string> lst = new List<string>();
                int total = lstProfesionales.Count < count ? lstProfesionales.Count : count;
                for (int i = 0; i < total; i++)
                {
                    string item = AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem(lstProfesionales[i].Descripcion, lstProfesionales[i].CodPersona);
                    lst.Add(item);
                }
                retVal = lst.ToArray();
                return retVal;
            }

            [System.Web.Services.WebMethod]
            [System.Web.Script.Services.ScriptMethod]
            public static string[] buscaMateriales(string prefixText, int count)
            {
                string[] retVal;
                List<MaterialBE> lstMateriales = MaterialBC.Instance.buscarMateriales(prefixText);
                List<string> lst = new List<string>();
                int total = lstMateriales.Count < count ? lstMateriales.Count : count;
                for (int i = 0; i < total; i++)
                {
                    string item = AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem(lstMateriales[i].DescMaterial, lstMateriales[i].CodMaterialCorto);
                    lst.Add(item);
                }
                retVal = lst.ToArray();
                return retVal;
            }
        #endregion 
        protected override void OnPreLoad(EventArgs e)
        {
            base.OnPreLoad(e);
        }
        
       
        #region Limpia Pantalla
        private void limpiarCliente()
        {
            Session.Remove("Cliente");
            ////txtCodCliente.Text = string.Empty;
            //txtNomCliente.Text = string.Empty;
            //txtDirCliente.Text = string.Empty;
            //---
            //txtCodCliente.ReadOnly = false;
            //txtNomCliente.ReadOnly = false;
            //aceNomCliente.Enabled = true;
        }
        #endregion

        private void calculaFechaEntregaItem(DetalleBE objDetalle)
        {
            DateTime fechaCalculada, fechaActual = DateTime.Today;
            double factor = 0;
            //----

            //if (objDetalle.PrioridadEntrega == "04")//normal +2
            //{
            //    factor = 2;
            //}
            //else if (objDetalle.PrioridadEntrega == "01" || objDetalle.PrioridadEntrega == "02")//express +1
            //{
            //    factor = 1;
            //}
            if (ParametroBC.Instance.esTipoX(objDetalle.PrioridadEntrega, "CodPrioEntMas2"))
            {
                factor = 2;
            }
            else if (ParametroBC.Instance.esTipoX(objDetalle.PrioridadEntrega, "CodPrioEntMas1"))
            {
                factor = 1;
            }
            else
            {
                factor = 0;
            }
            //-----
            int count = Convert.ToInt32(factor);
            //Si es domingo pasa como si fuera lunes
            if (fechaActual.DayOfWeek == DayOfWeek.Sunday)
            {
                count += 1;
            }
            fechaCalculada = fechaActual;
            for (int i = 1; i <= count; i++)
            {
                fechaCalculada = fechaCalculada.AddDays(1);
                if (fechaCalculada.DayOfWeek == DayOfWeek.Sunday)
                {
                    fechaCalculada = fechaCalculada.AddDays(1);
                }
            }

            //--- con una sola fecha de reparto:
            //if (fechaCalculada > objDetalle.FechaEntrega)
            //{
            //    objDetalle.FechaEntrega = fechaCalculada;
            //}
            //else if (objDetalle.FechaEntrega.DayOfWeek == DayOfWeek.Sunday)
            //{
            //    objDetalle.FechaEntrega = objDetalle.FechaEntrega.AddDays(1);
            //}

            //--- múltiples fechas de reparto:
            if (objDetalle.Repartos.Count == 0) { objDetalle.Repartos.Add(new RepartoBE()); }
            foreach (RepartoBE itmRep in objDetalle.Repartos)
            {
                if (fechaCalculada > itmRep.FechaEntrega)
                {
                    itmRep.FechaEntrega = fechaCalculada;
                }
                else if (itmRep.FechaEntrega.DayOfWeek == DayOfWeek.Sunday)
                {
                    itmRep.FechaEntrega = itmRep.FechaEntrega.AddDays(1);
                }
            }
        }
        /// <summary>
        /// función para calcular la fecha de entrega en base a la prioridad de entrega
        /// </summary>
        /// <param name="pObjPedido">Datos del pedido</param>     

        #region Botones

        protected void btnGrabar_Click(object sender, ImageClickEventArgs e)
        {
            string retval = string.Empty;
            GenericBE g = null;
            string nroRec = string.Empty;
            bool pasa = false;
            bool valida = true;
            try
            {
                    //****************************************************************************
                    //rhuapaya 29.02.2012
                    if (lnkCambiarStatus.Enabled)
                    {
                        if (txtUsuarioStatus.Text.Trim() == "")
                        {
                            Session["Mensaje"] = "Ingrese una persona en el panel Status";
                            valida = false;
                        }

                        if (txtFechaSts.Text.Trim() == "")
                        {
                            Session["Mensaje"] = "Ingrese una fecha en el panel Status";
                            valida = false;
                        }
                    }

                    if (txtNroPedido.Text.Trim() == "")
                    {
                        Session["Mensaje"] = "Ingrese un número de pedido";
                        valida = false;
                    }

                    if (txtMaterial.Text.Trim() == "" && txtMaterial2.Text.Trim() == "")
                    {
                        Session["Mensaje"] = "Ingrese un material asociado al pedido";
                        valida = false;
                    }
                    
                    //****************************************************************************
                    if (valida)
                    {
                        if (ddlResultado.SelectedIndex > 0)
                        {
                            //if (ddlJustificResul.Items.Count > 1 && ddlJustificResul.SelectedIndex > 0)
                            pasa = true;
                            //else if (ddlJustificResul.Items.Count == 1)
                            //    pasa = true;

                        }
                        if (pasa)
                        {
                            if (((lblMaterial1.Text.Equals("Valido") || txtMaterial.Text.Equals("")) &&
                               (lblMaterial2.Text.Equals("Valido") || txtMaterial2.Text.Equals("")) &&
                               (lblNroPedido.Text.Equals("Valido") || txtNroPedido.Text.Equals("")) &&
                               (!txtEmpresa.Text.Equals("") && !txtNomCliente.Text.Equals(""))) || ((string)Session["Operacion"]).Equals("editar"))
                            {
                                DocReclamoBE Doc = null;
                                validaInterlocutores();
                                validaDatosMP();

                                guardarReclamo();
                                Doc = (DocReclamoBE)Session["DocReclamo"];


                                if (((string)Session["Operacion"]).Equals("editar"))
                                { g = ReclamoBC.Instance.set_ModificarReclamo(Doc); }
                                else
                                { g = ReclamoBC.Instance.set_Reclamo(Doc); }

                                Session["Mensaje"] = g.Descripcion;
                                if (((string)Session["Operacion"]).Equals("crear"))
                                    nroRec = g.Descripcion.Substring(16, 10);
                                limpiaPedido();
                            }
                            else
                            {
                                Session["Mensaje"] = "Verifique los siguientes datos: Empresa, Nro. Pedido, Material 1 y Material 2.";
                            }
                        }
                        else
                        {
                            Session["Mensaje"] = "Debe de seleccionar un resultado y una justificación.";
                        }
                    }
                }
                catch (Exception ex)
                {
                    //throw ex;
                    Session["Mensaje"] = ex.Message;
                }
                finally
                {
                    tcMain.ActiveTabIndex = 0;
                    //verificar resultado:

                    Session["Mensaje"] = retval != "" ? retval : Session["Mensaje"];
                    if (g != null)
                    {
                        if (g.Codigo.Equals("S"))
                        {
                            //limpia sesion
                            Session.Remove("Operacion");
                            Session.Remove("DocReclamo");
                            this.limpiaPedido();
                            this.manejarBotonera();
                            tcMain.ActiveTabIndex = 0;
                            limpiar();
                        }
                    }
                    txtNumReclamo.Text = nroRec;
                    upBotones.Update();
                    upMain.Update();
                    ((Site)Master).muestraMensajes();
                }
            }
           
        protected void btnActualizar_Click(object sender, ImageClickEventArgs e)
        {
        }

        protected void btnCrear_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                Session["Operacion"] = "crear";
                txtFechaI.Text = DateTime.Today.ToString("dd/MM/yyyy");
                txtHoraReclamoI.Text = DateTime.Now.TimeOfDay.ToString().Substring(0, 8);
                txtFechaF.Text = DateTime.Today.ToString("dd/MM/yyyy");
                txtHoraReclamoF.Text = DateTime.Now.TimeOfDay.ToString().Substring(0, 8);
                txtFechaSts.Text = DateTime.Today.ToString("dd/MM/yyyy");
                cargaDatosUsuario();
                DocReclamo = new DocReclamoBE();
                Session["DocReclamo"] = DocReclamo;
                this.manejarBotonera();
                //rhuapaya 09.03.2012
                tpVisitas.Enabled = false;
                //**********************************************************
                this.tcMain.Enabled = true;
                activarCampos(true);
                txtNumReclamo.Text = string.Empty; //adicionado 21.03.2012
            }
            catch (Exception ex)
            {
                Session["Mensaje"] = ex.Message;
                tcMain.Enabled = false;
            }
            finally
            {
                ((Site)Master).muestraMensajes();
                upBotones.Update();
                lnkCambiarStatus.Enabled = false;
                upMain.Update();
            }
        }


        protected void btnVer_Click(object sender, ImageClickEventArgs e)
        {

            string retval = string.Empty;
            DocReclamoBE Doc = null;
            try
            {
                Doc = ReclamoBC.Instance.getReclamo(txtNumReclamo.Text.Trim().PadLeft(10, '0'));
                Session["DocReclamo"] = Doc;
                cargarReclamo();
                //-------------------------------------
                lblStatus.Text = ddlStatus.SelectedItem.ToString();
                DropDownListStatusVisita.SelectedValue = ddlStatus.SelectedValue;
                Session["Operacion"] = "Ver";
                    //campos
                lnkCambiarStatus.Enabled = true;
                activarCampos(false);
                tpVisitas.Enabled = true;
                ImageButtonAnadir.Enabled = true;
                ImageButtonCancelar.Enabled = true;
                ImageButtonGuardar.Enabled = true;
            }
            catch (Exception ex)
            {
                //throw ex;
                Session["Mensaje"] = ex.Message;
                tcMain.Enabled = false;
            }
            finally
            {
                tcMain.ActiveTabIndex = 0;
                //verificar resultado:

                Session["Mensaje"] = retval != "" ? retval : Session["Mensaje"];
                upBotones.Update();
                upMain.Update();
                ((Site)Master).muestraMensajes();
            }
        }

        protected void btnEditar_Click(object sender, ImageClickEventArgs e)
        {

            string retval = string.Empty;
            DocReclamoBE Doc = null;
            try
            {
                if (txtNumReclamo.Text.Trim('0').Trim().Equals(""))
                    Session["Mensaje"] = "Ingrese un número de reclamo";
                else
                {
                    Doc = ReclamoBC.Instance.getReclamo(txtNumReclamo.Text.Trim().PadLeft(10, '0'));
                    Session["DocReclamo"] = Doc;
                    cargarReclamo();
                    //campos
                    lnkCambiarStatus.Enabled = true;
                    activarCampos(false);

                    lblStatus.Text = ddlStatus.SelectedItem.ToString();
                    DropDownListStatusVisita.SelectedValue = ddlStatus.SelectedValue;
                    tpVisitas.Enabled = true;
                    ImageButtonAnadir.Enabled = true;
                    ImageButtonCancelar.Enabled = true;
                    ImageButtonGuardar.Enabled = true;
                    //habilitamos los campos de cambio de estado
                    txtUsuarioStatus.Enabled = true;
                    txtFechaSts.Enabled = true;
                    txtDescripcion.Enabled = true;
                }

            }
            catch (Exception ex)
            {
                //throw ex;
                Session["Mensaje"] = ex.Message;
                tcMain.Enabled = false;
            }
            finally
            {
                tcMain.ActiveTabIndex = 0;
                //verificar resultado:

                Session["Mensaje"] = retval != "" ? retval : Session["Mensaje"];
                upBotones.Update();
                upMain.Update();
                ((Site)Master).muestraMensajes();
            }
        }

        protected void btnCancel_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                //limpia sesion
                Session.Remove("Operacion");
                Session.Remove("codServicio");
                Session.Remove("DocReclamo"); 
                this.limpiaPedido();
                //tcMain.Enabled = false;
                //-----
                this.manejarBotonera();
                limpiar();
                tcMain.ActiveTab = tpCabecera;
                txtNumReclamo.Enabled = true;
                tpCabecera.Enabled = true;
                tpVisitas.Enabled = false;
                LimpiarVisitas();
                List<ZReclamoVisitasBE> lst = new List<ZReclamoVisitasBE>();
                GridViewVisitas.DataSource = lst;
                GridViewVisitas.DataBind();
            }
            catch (Exception ex)
            {
                Session["Mensaje"] = ex.Message;
            }
            finally
            {
                ((Site)Master).muestraMensajes();
                upBotones.Update();
                upMain.Update();
            }
        }

        protected void btnValidar_Click(object sender, ImageClickEventArgs e)
        {
            bool valida = true;
            //****************************************************************************
            //rhuapaya 29.02.2012
            try
            {
                if (lnkCambiarStatus.Enabled)
                {
                    if (txtUsuarioStatus.Text.Trim() == "")
                    {
                        Session["Mensaje"] = "Ingrese una persona en el panel Status";
                        valida = false;
                    }

                    if (txtFechaSts.Text.Trim() == "")
                    {
                        Session["Mensaje"] = "Ingrese una fecha en el panel Status";
                        valida = false;
                    }
                }
                if (txtNroPedido.Text.Trim() == "")
                {
                    Session["Mensaje"] = "Ingrese un número de pedido";
                    valida = false;
                }

                if (txtMaterial.Text.Trim() == "" && txtMaterial2.Text.Trim() == "")
                {
                    Session["Mensaje"] = "Ingrese un material asociado al pedido";
                    valida = false;
                }
                //****************************************************************************
                if (valida)
                {
                    validarTodo();
                }
            }
            catch (Exception ex)
            {
                Session["Mensaje"] = ex.Message;
            }
            finally
            {
                ((Site)Master).muestraMensajes();
            }            
        }

        #endregion

        #region metodos load
             

        #endregion

        protected void btnGrabarInterlocutores_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                    txtPersonaContacto.Text = //txtCodPContac.Text;
                    //txtCodPContac.Text = "";
                    txtEmpResp.Text = txtCodResPago.Text;
                    validarTodo();
                    txtNomCliente.Text = txtNomEmpresa.Text;
            }
            catch (Exception ex)
            {
                Session["Mensaje"] = ex.Message;
            }
            finally
            {
                ((Site)Master).muestraMensajes();
                upBotones.Update();
                upMain.Update();
            }

        }

        protected void ddlResultado_SelectedIndexChanged(object sender, EventArgs e)
        {
            string lpResultado = ((DropDownList)sender).SelectedValue;
            List<GenericBE> lst = null;
            DocReclamo = (DocReclamoBE)Session["DocReclamo"];

            cargarJustificacion(lpResultado, (List<JustificaionBE>)Session["JustificResul"]);
            lst = cargarJustificacion(ddlResultado.SelectedValue, (List<JustificaionBE>)Session["JustificResul"]);
            if (lst.Count > 0)
            {
                ddlJustificResul.DataTextField = "Descripcion";
                ddlJustificResul.DataValueField = "Codigo";
                ddlJustificResul.DataSource = lst;
                ddlJustificResul.DataBind();
            }

        }

        protected void ddlOfiVenta_SelectedIndexChanged(object sender, EventArgs e)
        {
            //string lpResultado = ((DropDownList)sender).SelectedValue;
            //List<GenericBE> lst = null;
            //DocReclamo = (DocReclamoBE)Session["DocReclamo"];
            //lst = cargarJustificacion(lpResultado, (List<JustificaionBE>)Session["VENDEDORES"]);
            //if (lst.Count > 0)
            //{
            //    ddlGrupoVend.DataTextField = "Descripcion";
            //    ddlGrupoVend.DataValueField = "Codigo";
            //    ddlGrupoVend.DataSource = lst;
            //    ddlGrupoVend.DataBind();
            //}

        }

        protected void btnImprimir_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                if (txtNumReclamo.Text.Trim().Equals(string.Empty))
                {
                    Session["Mensaje"] = "Debe ingresar el número de reclamo que desea imprimir.";
                    txtNumReclamo.Focus();
                }
                else
                {
                        DocReclamoBE pObj = ReclamoBC.Instance.getReclamoImpr(txtNumReclamo.Text.Trim());

                    if (pObj != null)
                    {
                        Session["DocRecImpr"] = pObj;
                        //imprimir
                        string imprPage = "ImprReclamo.aspx";
                        string str = string.Empty;
                        str = string.Format("<script type='text/javascript'> " +
                                "window.open('ImprReclamo.aspx?np={1}','','width=793,height=600,top=50,left=350,status=no,resizable=no,scrollbars=yes','true'); " +
                                  " </script>", imprPage, pObj.Contactos.VBELN.Trim('0'));
                            
                            ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "IMPRIMIR", str, false);
                      }                        
                    else
                    {
                        Session["Mensaje"] = "No se encontró el Doc de Reclamo";
                        txtNumReclamo.Focus();
                    }
                }
            }
            catch (Exception ex)
            {
                Session["Mensaje"] = ex.Message;
            }
            finally
            {
                ((Site)Master).muestraMensajes();
                upBotones.Update();
                upMain.Update();
            }
        }

        protected void txtMateriales_TextChanged(object sender, EventArgs e)
        {
            validarTodo();
        }

        protected void txtInterlocutores_TextChanged(object sender, EventArgs e)
        {
                string retval = string.Empty;
            try{
                txtNomCliente.Text = string.Empty;
                txtEmpresaDet.Text = string.Empty;
                txtNomEmpresa.Text = string.Empty;
                txtDirEmpresa.Text = string.Empty;
                ddlCodpEmpresa.SelectedValue = "";
                validarTodo();
            }
            catch (Exception ex)
            {
                //throw ex;
                Session["Mensaje"] = ex.Message;
                tcMain.Enabled = false;
            }
            finally
            {
                tcMain.ActiveTabIndex = 0;
                //verificar resultado:

                Session["Mensaje"] = retval != "" ? retval : Session["Mensaje"];
                upBotones.Update();
                upMain.Update();
                ((Site)Master).muestraMensajes();
            }
        }

        #region Web Service

        [System.Web.Services.WebMethod]
        [System.Web.Script.Services.ScriptMethod]
        public static string[] buscaClientes2(string prefixText, int count)
        {
            string[] retVal;
            List<ClienteBE> lstClientes = ClienteBC.Instance.buscar(prefixText);
            List<string> lst = new List<string>();
            int total = lstClientes.Count < count ? lstClientes.Count : count;
            for (int i = 0; i < total; i++)
            {
                string item = AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem(lstClientes[i].Descripcion, lstClientes[i].Codigo);
                lst.Add(item);
            }
            retVal = lst.ToArray();
            return retVal;
        }
        #endregion

        //WEBDIST
        private void VerificaOpcionesUsuario()
        {
            List<string> lstOpciones;
            if (Session["Opciones"] == null)
                return;
            else
                lstOpciones = (List<string>)Session["Opciones"];

            if (lstOpciones.Contains("RECLA_01"))
                btnCrear.Visible = true;
            else
                btnCrear.Visible = false;

            if (lstOpciones.Contains("RECLA_02"))
                btnEditar.Visible = true;
            else
                btnEditar.Visible = false;

            if (lstOpciones.Contains("RECLA_03"))
                btnVer.Visible = true;
            else
                btnVer.Visible = false;
        }
        
        List<ZReclamoVisitasBE> lstVisitas = new List<ZReclamoVisitasBE>();
        protected void ImageButtonAnadir_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                string res = ValidaVisita();
                if (res.Length > 0)
                {
                    Session["Mensaje"] = res;
                }
                else
                {
                    lstVisitas = (List<ZReclamoVisitasBE>)Session["Visitas"];
                    ZReclamoVisitasBE objVisitas = new ZReclamoVisitasBE();
                    objVisitas.VBELN = txtNumReclamo.Text.PadLeft(10, '0');
                    objVisitas.NROVIS = txtIdVisita.Text == "" ? "0000000000" : txtIdVisita.Text.PadLeft(10, '0');
                    objVisitas.KTAST = DropDownListStatusVisita.SelectedValue;
                    objVisitas.RESP = TextBoxResponsableVisita.Text.Trim();
                    objVisitas.FECHA = Convert.ToDateTime(TextBoxFechaVisita.Text);
                    objVisitas.TIME = TextBoxHoraVisita.Text;
                    objVisitas.COMENT = TextBoxComentarioVisita.Text;
                    if (txtIdVisita.Text.Trim() == "")
                    {
                        lstVisitas.Add(objVisitas);
                    }
                    else
                    {
                        if (Convert.ToInt32(HiddenFieldIndiceSeleccionado.Value) >= 0)
                        {
                            lstVisitas.RemoveAt(Convert.ToInt32(HiddenFieldIndiceSeleccionado.Value));
                            lstVisitas.Add(objVisitas);
                        }
                    }

                    Session.Remove("Visitas");
                    Session["Visitas"] = lstVisitas;
                    InsertarDescripcionEstadoVisitas();

                    LimpiarVisitas();
                    GridViewVisitas.SelectedIndex = -1;
                    HiddenFieldIndiceSeleccionado.Value = "";
                    DropDownListStatusVisita.SelectedValue = ddlStatus.SelectedValue;
                }
            }
            catch (Exception ex)
            {
                Session["Mensaje"] = ex.Message;
            }
            finally
            {
                ((Site)Master).muestraMensajes();
            }
        }

        protected void ImageButtonCancelar_Click(object sender, ImageClickEventArgs e)
        {
            LimpiarVisitas();
            GridViewVisitas.SelectedIndex = -1;
            HiddenFieldIndiceSeleccionado.Value = "";
            DropDownListStatusVisita.SelectedValue = ddlStatus.SelectedValue;
        }

        protected void ImageButtonGuardar_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                lstVisitas = new List<ZReclamoVisitasBE>();
                lstVisitas = ReclamoBC.Instance.setVisitas((List<ZReclamoVisitasBE>)Session["Visitas"]);
                Session.Remove("Visitas");
                Session["Visitas"] = lstVisitas;
                InsertarDescripcionEstadoVisitas();

                LimpiarVisitas();
                GridViewVisitas.SelectedIndex = -1;
                HiddenFieldIndiceSeleccionado.Value = "";
                DropDownListStatusVisita.SelectedValue = ddlStatus.SelectedValue;
            }
            catch (Exception ex)
            {
                Session["Mensaje"] = ex.Message;
            }
            finally
            {
                ((Site)Master).muestraMensajes();
            }
        }

        private void LimpiarVisitas()
        {
            //el estado no se limpia, por que es del documento de reclamo
            txtIdVisita.Text = "";
            TextBoxFechaVisita.Text = "";
            TextBoxHoraVisita.Text = "";
            TextBoxComentarioVisita.Text = "";
            TextBoxResponsableVisita.Text = "";
            DropDownListStatusVisita.SelectedIndex = 2;
            DropDownListStatusVisita.Enabled = true;
        }

        protected void GridViewVisitas_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "SelVisita")
            {
                DropDownListStatusVisita.Enabled = false;
                txtIdVisita.Text = GridViewVisitas.Rows[Convert.ToInt32(e.CommandArgument)].Cells[1].Text;
                TextBoxFechaVisita.Text = GridViewVisitas.Rows[Convert.ToInt32(e.CommandArgument)].Cells[2].Text;
                TextBoxHoraVisita.Text = GridViewVisitas.Rows[Convert.ToInt32(e.CommandArgument)].Cells[3].Text;
                DropDownListStatusVisita.SelectedValue = GridViewVisitas.DataKeys[Convert.ToInt32(e.CommandArgument)].Values["KTAST"].ToString();
                TextBoxResponsableVisita.Text = GridViewVisitas.Rows[Convert.ToInt32(e.CommandArgument)].Cells[5].Text;
                TextBoxComentarioVisita.Text = GridViewVisitas.DataKeys[Convert.ToInt32(e.CommandArgument)].Values["COMENT"].ToString();

                HiddenFieldIndiceSeleccionado.Value = e.CommandArgument.ToString();
            }
        }

        private void InsertarDescripcionEstadoVisitas()
        { 
            lstVisitas = (List<ZReclamoVisitasBE>)Session["Visitas"];
            List<GenericBE> lstGen = new List<GenericBE>();
            lstGen = (List<GenericBE>)Session["Status"];
            foreach (ZReclamoVisitasBE item in lstVisitas)
            {
                item.DESCKTAST = lstGen.Find(x => x.Codigo == item.KTAST).Descripcion;
            }

            Session["Visitas"] = lstVisitas;
            GridViewVisitas.DataSource = (List<ZReclamoVisitasBE>)Session["Visitas"];
            GridViewVisitas.DataBind();
        }

        private string ValidaVisita()
        {
            string valida = "";
            if (TextBoxResponsableVisita.Text.Trim() == "")
            {
                valida = "Ingrese el responsable de la visita";
            }
            if (TextBoxFechaVisita.Text.Trim() == "")
            {
                valida = "Ingrese la fecha de la visita";
            }
            if (TextBoxHoraVisita.Text.Trim() == "")
            {
                valida = "Ingrese la hora de la visita";
            }
            if (TextBoxComentarioVisita.Text.Trim() == "")
            {
                valida = "Ingrese un comentario de la visita";
            }

            return valida;
        }

        private void CargarDatosCombos()
        {
            //panel interlocutores
            List<GenericBE> lstOficinas = new List<GenericBE>();
            List<GenericBE> lstTipoDocumento = new List<GenericBE>();
            List<GenericBE> lstGrupoVendedores = new List<GenericBE>();
            List<GenericBE> lstSectores = new List<GenericBE>();
            List<GenericBE> lstMotivos = new List<GenericBE>();
            List<GenericBE> lstGrupoCond = new List<GenericBE>();
            List<GenericBE> lstBloqueoEntrega = new List<GenericBE>();
            List<GenericBE> lstBloqueoFactura = new List<GenericBE>();
            List<GenericBE> lstVendedores = new List<GenericBE>();
            List<GenericBE> lstCodigoPostal = new List<GenericBE>();
            List<GenericBE> lstTipoVisita = new List<GenericBE>();
            List<GenericBE> _lvLstPrioridadEnt = new List<GenericBE>();

            ParametroBC.Instance.getDataDDL(ref lstCodigoPostal, ref lstVendedores,
            ref lstBloqueoEntrega, ref lstBloqueoFactura,
            ref _lvLstPrioridadEnt, ref lstGrupoCond, ref lstGrupoVendedores, ref lstMotivos, ref lstOficinas, ref lstSectores,
            ref lstTipoDocumento, ref lstTipoVisita);

            Dictionary<string, List<GenericBE>> lstCombos = new Dictionary<string, List<GenericBE>>();
            lstCombos.Add("codigoPostal", lstCodigoPostal);
            lstCombos.Add("vendedores", lstVendedores);
            lstCombos.Add("bloqueoEntrega", lstBloqueoEntrega);
            lstCombos.Add("bloqueoFactura", lstBloqueoFactura);
            lstCombos.Add("prioridadEnt", _lvLstPrioridadEnt);
            lstCombos.Add("grupoCond", lstGrupoCond);
            lstCombos.Add("grupoVendedores", lstGrupoVendedores);
            lstCombos.Add("motivos", lstMotivos);
            lstCombos.Add("oficinas", lstOficinas);
            lstCombos.Add("sectores", lstSectores);
            lstCombos.Add("tipoDocumento", lstTipoDocumento);
            lstCombos.Add("tipoVisita", lstTipoVisita);

            Session["CargarCombos"] = lstCombos;
        }
    }
}
